par Paul | 6 Août 2019 | Test de matériel | 7 commentaires
Les SSD NVMe constituent un vrai palier en termes de performances, mais il nécessitent de bien connaître l’environnement matériel dans lequel les exploiter. On peut même utiliser un SSD NVMe en tant que partition racine Linux dans un vieux serveur non compatible NVMe, avec un peu d’astuce.
Sommaire [masquer]
Dans le monde des SSD, l’interface NVMe est ce qui se fait de mieux car elle permet des latences très courtes, une gestion de profondeur de queue améliorée, et d’autres optimisations encore (source : Intel et anandtech.com). En pratique, NVMe donne accès à des débits de lecture-écriture gigantesques de l’ordre de 1 ou 2 Go/sec selon les modèles.
L’interface NVMe passe toujours par un bus de transport PCIe, mais plusieurs types de connecteurs sont disponibles comme le M.2 ou U.2 alias SFF-8639 (mini-SAS) qui est utilisé par les SSD NVMe professionnels en 2,5 pouces (exemple : Intel P3600).
Le connecteur femelle M.2 qui est utilisé par NVMe (une encoche) et AHCI (une encoche) est également compatible avec des SSD SATA (deux encoches). Il ne faut donc pas confondre M.2 (le connecteur physique) avec NVMe (l’interface) ni PCIe (le bus de transport). Quant à mSATA, c’est encore un autre connecteur qui n’a rien à voir avec NVMe ni PCIe, mais juste un connecteur SATA en plus petit.
Le NVMe n’est pas la seule interface qui utilise le bus PCIe, on trouve aussi des SSD AHCI dont les performances sont respectables et qui sont réputés mieux compatibles avec les ordinateurs anciens (discussion ici). Le HP Z Turbo Drive est un exemple de SSD PCIe fonctionnant en AHCI. Cette carte PCIe x4 utilise en fait un SSD M.2 AHCI (modèle Samsung XP941) à l’intérieur.
Pour donner un exemple matériel, la station de travail HP z230 est réputée compatible avec les SSD PCIe AHCI selon le changelog du BIOS, même pour le boot, mais incompatible avec le boot sur NVMe (selon les forums officiels).
On peut trouver des cartes mères vendu comme compatibles avec NVMe et d’autres non. A mon sens, aucune carte mère est incompatible avec un SSD NVMe pourvu qu’elle ait un connecteur PCIe x4. Même une vieille carte mère pourra exploiter un espace de stockage NVMe. Par contre, il faut absolument une carte mère récente pour booter sur un stockage NVMe. Pour connaitre la compatibilité d’un modèle particulier vous pouvez vous référer à la liste à puces ci-dessous ou tout simplement vous référer à la documentation de votre matériel ou aux forums du constructeur.
Plus précisément, pour booter sur un SSD NVMe, il faut un BIOS qui soit UEFI, et qui soit compatible NVMe. Donc pour récapituler :
•.si vous n’avez pas de BIOS UEFI, vous ne pourrez pas booter sur un SSD NVMe.
•.si vous avez un BIOS UEFI, mais que celui-ci n’est pas compatible NVMe (exemple : HP z230) vous ne pourrez pas booter sur un SSD NVMe.
•.si vous avez un BIOS UEFI, et que celui-ci est compatible NVMe (exemple : HP z240) alors vous pourrez booter sur un SSD NVMe.
•.dans tous les cas : vous pourrez quand même utiliser le SSD NVMe comme stockage accessoire (pas la partition système).
Finalement, il est rarement utile d’employer un SSD NVMe en tant que partition système, où un simple modèle SATA fera aussi bien. Par contre la technologie NVMe excelle dans des applications gourmandes en IO telles que le cache entrée-sortie (L2ARC sur ZFS par exemple), ou encore le stockage d’images de machines virtuelles. Ces applications ne nécessitent pas de booter dessus ; ces applications sont possibles sur une vieille machine.
Première méthode : l’amorçage sur un autre support
J’ai voulu malgré tout utiliser un SSD NVMe en tant que partition système sur un vieux serveur HP DL360 Gen8 dont le BIOS n’est pas compatible UEFI. On peut installer l’OS Debian dessus, mais le BIOS se trouvera incapable d’amorcer dessus car il ne le voit carrément pas.
Qu’à cela ne tienne, il vous suffit de créer une partition amorçable /boot sur un média extérieur tel qu’une carte SD ou une clé USB. J’ai choisi la carte SD sur l’emplacement interne de la carte mère. Les cartes SD récentes se payent le luxe d’être compatibles avec la commande TRIM.
Ainsi une table des partitions normale sur un SSD NVMe dans un serveur récent ressemble à cela (avec partition EFI) :
Disque /dev/nvme0n1 : 477 GiB, 512110190592 octets, 1000215216 secteurs Périphérique Début Fin Secteurs Taille Type /dev/nvme0n1p1 2048 976895 974848 476M Système EFI /dev/nvme0n1p2 976896 1000214527 999237632 476,5G Système de fichiers Linux
1 2 3 4 5 | Disque /dev/nvme0n1 : 477 GiB, 512110190592 octets, 1000215216 secteurs
Périphérique Début Fin Secteurs Taille Type /dev/nvme0n1p1 2048 976895 974848 476M Système EFI /dev/nvme0n1p2 976896 1000214527 999237632 476,5G Système de fichiers Linux |
Une table des partitions sur un SSD NVMe dans un vieux serveur (pas EFI) ressemble à ci-dessous. J’ai rajouté la partition /boot sur le SSD (sdb).
Disque /dev/nvme0n1 : 477 GiB, 512110190592 octets, 1000215216 secteurs Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/nvme0n1p1 2048 1000214527 1000212480 477G 83 Linux Disque /dev/sdb : 488,5 MiB, 512229376 octets, 1000448 secteurs Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sdb1 * 2048 999423 997376 487M 83 Linux
1 2 3 4 5 6 7 8 9 10 | Disque /dev/nvme0n1 : 477 GiB, 512110190592 octets, 1000215216 secteurs
Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/nvme0n1p1 2048 1000214527 1000212480 477G 83 Linux
Disque /dev/sdb : 488,5 MiB, 512229376 octets, 1000448 secteurs
Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sdb1 * 2048 999423 997376 487M 83 Linux |
Seconde méthode : gestionnaire d’amorçage comme Clover
Dans la même idée, vous pouvez utiliser un vieux matériel pour amorcer sur un gestionnaire de boot comme Clover. Ce logiciel est bien connu des amateurs de Hackintosh. Ensuite, le gestionnaire de boot pourra se substituer au BIOS pour amorcer sur un SSD NVMe.
Cette solution vise particulièrement les machines sous Windows puisque n’importe quelle distribution Linux pourra utiliser la première méthode ci-dessus. Voici plus d’explications sur la procédure à suivre pour Windows.
Voilà je l’espère de quoi clarifier la situation entre toutes ces normes et ces incompatibilités possibles. Dernier conseil : si vous utilisez un convertisseur M.2 vers PCIe x4 (exemple ici), connectez-le sur un port de la carte mère x8 ou x16 car les connecteurs physiques x4 ne supportent pas toujours 4 voies, ce qui conduit à des performances bridées.
Pour en savoir plus sur l’utilisation d’un SSD sous Linux et de la commande trim, vous pouvez consulter mon guide ultime sur le SSD.